import 'package:dio/dio.dart';

class DioHelper {
  // 空安全实现单例
  static DioHelper? _instance;

  static DioHelper get instance => _instance ??= DioHelper._init();

  DioHelper._init();

  // 1. 创建dio实例
  final Dio _dio = Dio();

  // 2. 设置header
  void setHeader(Map<String, dynamic> headers) {
    _dio.options.headers.addAll(headers);
  }

  // 3. 设置baseurl
  void setBaseUrl(String baseUrl) {
    _dio.options.baseUrl = baseUrl;
  }

  // 4. 设置超时时间
  void setTimeout({int timeout = 5000}) {
    _dio.options.connectTimeout = Duration(milliseconds: timeout);
  }

  // 5. 设置拦截器
  void setInterceptors(Interceptor interceptors) {
    _dio.interceptors.add(interceptors);
  }

  Dio get dio => _dio;

  /// 统一返回code提示map
  static Map<int, String> codeMessage = {
    200: "服务器成功返回请求的数据。",
    201: "新建或修改数据成功。",
    202: "一个请求已经进入后台排队（异步任务）。",
    204: "删除数据成功。",
    400: "发出的请求有错误，服务器没有进行新建或修改数据的操作。",
    401: "用户没有权限（令牌、用户名、密码错误）。",
    403: "用户得到授权，但是访问是被禁止的。",
    404: "发出的请求针对的是不存在的记录，服务器没有进行操作。",
    406: "请求的格式不可得。",
    410: "请求的资源被永久删除，且不会再得到的。",
    422: "当创建一个对象时，发生一个验证错误。",
    500: "服务器发生错误，请检查服务器。",
    502: "网关错误。",
    503: "服务不可用，服务器暂时过载或维护。",
    504: "网关超时。",
  };
}
